home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / graphics / pstricks / ps / pstricks.pro < prev    next >
Text File  |  1993-04-07  |  10KB  |  172 lines

  1. %!
  2. % PostScript prologue for pstricks.tex.
  3. % Created 1993/3/12. Source file was pstricks.doc
  4. % Version 0.93a, 93/03/12.
  5. % For use with Rokicki's dvips.
  6. /tx@Dict 200 dict def tx@Dict begin
  7. /ADict 25 dict def
  8. /CM { matrix currentmatrix } bind def
  9. /SLW /setlinewidth load def
  10. /CLW /currentlinewidth load def
  11. /CP /currentpoint load def
  12. /ED { exch def } bind def
  13. /L /lineto load def
  14. /T /translate load def
  15. /Atan { /atan load stopped { pop pop 0 } if } def
  16. /Div { dup 0 eq { pop } { div } ifelse } def
  17. /NET { neg exch neg exch T } def
  18. /Pyth { dup mul exch dup mul add sqrt } def
  19. /PtoC { 2 copy cos mul 3 1 roll sin mul } def
  20. /PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
  21. def
  22. /PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
  23. } { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
  24. pathforall z } def
  25. /STP { .996264 dup scale } def
  26. /STV { SDict begin normalscale end STP  } def
  27. /DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
  28. PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
  29. mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
  30. /y ED x mul /x ED x 0 eq y 0 eq and { /x 1 def /y 1 def } if [ y x ] 1 a
  31. sub y mul setdash stroke } def
  32. /DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
  33. { /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
  34. def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
  35. ] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
  36. setlinecap stroke } def
  37. /LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
  38. /x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
  39. def newpath 2 setlinecap n { currentstrokeadjust == x1 y1 moveto x2 y1 L
  40. stroke /y1 y1 a add def } repeat grestore } def
  41. /LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
  42. /x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
  43. def newpath 2 setlinecap systemdict /currentstrokeadjust known {
  44. currentstrokeadjust } { false } ifelse { /t { } def } { /t { transform
  45. 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }
  46. bind def } ifelse n { x1 y1 t moveto x2 y1 t L stroke /y1 y1 a add def }
  47. repeat grestore } def
  48. /BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
  49. exch 3 index sub exch Atan rotate newpath } def
  50. /EndArrow { @mtrx setmatrix CP grestore end } def
  51. /Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
  52. scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
  53. grestore } def
  54. /Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
  55. CLW moveto } def
  56. /Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
  57. div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
  58. CLW moveto } def
  59. /RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
  60. 2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
  61. curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
  62. def
  63. /Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
  64. /closepath load } pathforall ] cvx newpath 3 1 roll T exec } def
  65. /SD { 0 360 arc fill } def
  66. /SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
  67. /ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
  68. /SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
  69. def
  70. /NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
  71. cvi def } def
  72. /NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
  73. f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
  74. /Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
  75. def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
  76. /Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
  77. ifelse { pop } repeat a } def
  78. /CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
  79. and { pop pop /n n 1 sub def } if } def
  80. /Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
  81. repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
  82. ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
  83. moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
  84. Lineto pop pop closepath } ifelse } def
  85. /CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
  86. def } def
  87. /CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
  88. def } def
  89. /CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
  90. def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
  91. mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
  92. abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
  93. /y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
  94. m mul neg def } def
  95. /IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
  96. ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
  97. def
  98. /BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
  99. /NC { CC x1 y1 x2 y2 x y curveto } def
  100. /EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
  101. /BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
  102. /NAC { x2 y2 x y curveto CC x1 y1 } def
  103. /EAC { x2 y2 x y ArrowB curveto pop pop } def
  104. /OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
  105. n { NC } repeat EOC } ifelse } def
  106. /AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
  107. /Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
  108. pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
  109. /ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
  110. CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
  111. repeat closepath pop pop } ifelse } def
  112. /EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
  113. CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
  114. /Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
  115. x1 y1 lineto closepath } def
  116. /OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
  117. y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
  118. exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
  119. /b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
  120. x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
  121. ifelse } def
  122. /Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
  123. /y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
  124. pop pop Rect } { OvalFrame } ifelse } def
  125. /Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
  126. sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
  127. x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
  128. y0 x0 2 mul x1 sub y1 ] def } def
  129. /Grid { /a 4 string def /b ED /d ED /n ED cvi dup 1 lt { pop 1 } if /c ED
  130. c div dup 0 eq { pop 1 } if /cy ED c div dup 0 eq { pop 1 } if /cx ED cy
  131. div cvi /y ED cx div cvi /x ED cy div cvi /y2 ED cx div cvi /x2 ED cy
  132. div cvi /y1 ED cx div cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse
  133. def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2
  134. div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2
  135. div add def } if gsave n 0 gt { 1 setlinecap [ 0 cy n div ] 0 setdash }
  136. { 2 setlinecap } ifelse /c x1 def /i 500 w mul x1 add def /e y cy mul
  137. def /f y1 cy mul def /g y2 cy mul def x1 cx mul 0 T { newpath 0 e moveto
  138. b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2
  139. add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if 0
  140. f moveto 0 g L stroke cx w mul 0 T c x2 eq c i eq or {exit} if /c c w
  141. add def } loop grestore gsave n 0 gt { 1 setlinecap [ 0 cx n div ] 0
  142. setdash } { 2 setlinecap } ifelse /c y1 def /i 500 h mul y1 add def /e x
  143. cx mul def /f x1 cx mul def /g x2 cx mul def 0 y1 cy mul T { newpath e 0
  144. moveto b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2
  145. add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore }
  146. if f 0 moveto g 0 L stroke 0 cy h mul T c y2 eq c i eq or {exit} if /c c
  147. h add def } loop grestore } def
  148. /ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
  149. 1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
  150. exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
  151. mul neg d } def
  152. /Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
  153. /Rot { CP CP translate 3 -1 roll neg rotate NET  } def
  154. /PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
  155. /PutBegin { /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
  156. CP 4 2 roll T moveto } def
  157. /PutEnd { CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto } def
  158. /Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
  159. abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
  160. div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
  161. h1 abs h sub dup s mul abs } ifelse } def
  162. /UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
  163. mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
  164. { x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
  165. exch } def
  166. /BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { CP OLUnit T
  167. moveto /IfVisible true def } if } { IfVisible { CP OLUnit NET moveto
  168. /IfVisible false def } if } ifelse } def
  169. /InitOL { /OLUnit [ gsave CM STV 2890.79999 dup moveto setmatrix CP
  170. grestore ] cvx def /BOL { BeginOL } def /IfVisible true def } def
  171. end
  172.